package gbackup.command;

import gbackup.core.Shell;

public class HelpCommand extends Command {

	public HelpCommand(Shell shell, String rawCommand) {
		super(shell, rawCommand);
	}

	@Override
	public void execute() {
		Command versionCommand = new VersionCommand(this._shell, this._rawCommand);
		versionCommand.execute();

		this._outputPrintStream.println("Three categories: <transfer> <remote> <local>.");
		this._outputPrintStream.println("Both relative and absolute are valid path.");
		this._outputPrintStream.println();

		this._outputPrintStream.printf("-%-20s\t%-40s\n", "rls", "<remote> UNIX-like `ls' command");
		this._outputPrintStream.printf("-%-20s\t%-40s\n", "rls [PATH]", "<remote> UNIX-like `ls' command");
		this._outputPrintStream.printf("-%-20s\t%-40s\n", "rll", "<remote> UNIX-like `ls -l' command (implement not yet)");
		this._outputPrintStream.printf("-%-20s\t%-40s\n", "rll [PATH]", "<remote> UNIX-like `ls -l' command (implement not yet)");
		this._outputPrintStream.printf("-%-20s\t%-40s\n", "lls", "<local> UNIX-like `ls' command");
		this._outputPrintStream.printf("-%-20s\t%-40s\n", "lls [PATH]", "<local> UNIX-like `ls' command");
		this._outputPrintStream.printf("-%-20s\t%-40s\n", "lll", "<local> UNIX-like `ls -l' command (implement not yet)");
		this._outputPrintStream.printf("-%-20s\t%-40s\n", "lll [PATH]", "<local> UNIX-like `ls -l' command (implement not yet)");
		this._outputPrintStream.println();
		
		this._outputPrintStream.printf("-%-20s\t%-40s\n", "rcd", "<remote> UNIX-like `cd' command");
		this._outputPrintStream.printf("-%-20s\t%-40s\n", "rcd [PATH]", "<remote> UNIX-like `cd' command (implement not yet)");
		this._outputPrintStream.printf("-%-20s\t%-40s\n", "lcd", "<local> UNIX-like `cd' command");
		this._outputPrintStream.printf("-%-20s\t%-40s\n", "lcd [PATH]", "<local> UNIX-like `cd' command (implement not yet)");
		this._outputPrintStream.printf("-%-20s\t%-40s\n", "rpwd", "<remote> UNIX-like `pwd' command (implement not yet)");
		this._outputPrintStream.printf("-%-20s\t%-40s\n", "lpwd", "<local> UNIX-like `pwd' command (implement not yet)");
		this._outputPrintStream.println();

		this._outputPrintStream.printf("-%-20s\t%-40s\n", "rmkdir", "<remote> UNIX-like `mkdir' command (implement not yet)");
		this._outputPrintStream.printf("-%-20s\t%-40s\n", "rmkdir [PATH]", "<remote> UNIX-like `mkdir' command (implement not yet)");
		this._outputPrintStream.printf("-%-20s\t%-40s\n", "rrmdir", "<remote> UNIX-like `rmdir' command (implement not yet)");
		this._outputPrintStream.printf("-%-20s\t%-40s\n", "rrmdir [PATH]", "<remote> UNIX-like `rmdir' command (implement not yet)");
		this._outputPrintStream.printf("-%-20s\t%-40s\n", "rrm", "<remote> UNIX-like `rm' command (implement not yet)");
		this._outputPrintStream.printf("-%-20s\t%-40s\n", "rrm [PATH]", "<remote> UNIX-like `rm' command (implement not yet)");
		this._outputPrintStream.printf("-%-20s\t%-40s\n", "rrmf", "<remote> UNIX-like `rm -f' command (implement not yet)");
		this._outputPrintStream.printf("-%-20s\t%-40s\n", "rrmf [PATH]", "<remote> UNIX-like `rm -f' command (implement not yet)");
		this._outputPrintStream.printf("-%-20s\t%-40s\n", "rmv [SOURCE] [DEST]", "<remote> UNIX-like `mv -i' command (implement not yet)");
		this._outputPrintStream.printf("-%-20s\t%-40s\n", "rmvf [SOURCE] [DEST]", "<remote> UNIX-like `mv -f' command (implement not yet)");
		this._outputPrintStream.println();
		
		this._outputPrintStream.printf("-%-20s\t%-40s\n", "lmkdir", "<local> UNIX-like `mkdir' command (implement not yet)");
		this._outputPrintStream.printf("-%-20s\t%-40s\n", "lmkdir [PATH]", "<local> UNIX-like `mkdir' command (implement not yet)");
		this._outputPrintStream.printf("-%-20s\t%-40s\n", "lrmdir", "<local> UNIX-like `rmdir' command (implement not yet)");
		this._outputPrintStream.printf("-%-20s\t%-40s\n", "lrmdir [PATH]", "<local> UNIX-like `rmdir' command (implement not yet)");
		this._outputPrintStream.printf("-%-20s\t%-40s\n", "lrm", "<local> UNIX-like `rm' command (implement not yet)");
		this._outputPrintStream.printf("-%-20s\t%-40s\n", "lrm [PATH]", "<local> UNIX-like `rm' command (implement not yet)");
		this._outputPrintStream.printf("-%-20s\t%-40s\n", "lrmf", "<local> UNIX-like `rm -f' command (implement not yet)");
		this._outputPrintStream.printf("-%-20s\t%-40s\n", "lrmf [PATH]", "<local> UNIX-like `rm -f' command (implement not yet)");
		this._outputPrintStream.printf("-%-20s\t%-40s\n", "lmv [SOURCE] [DEST]", "<local> UNIX-like `mv -i' command (implement not yet)");
		this._outputPrintStream.printf("-%-20s\t%-40s\n", "lmv [SOURCE] [DEST]", "<local> UNIX-like `mv -f' command (implement not yet)");
		this._outputPrintStream.println();

		this._outputPrintStream.printf("-%-20s\t%-40s\n", "get [SOURCE]", "<transfer> FTP `get' command");
		this._outputPrintStream.printf("-%-20s\t%-40s\n", "get [SOURCE] [DEST]", "<transfer> FTP `get' command (implement not yet)");
		this._outputPrintStream.printf("-%-20s\t%-40s\n", "put [SOURCE]", "<transfer> FTP `put' command");
		this._outputPrintStream.printf("-%-20s\t%-40s\n", "put [SOURCE] [DEST]", "<transfer> FTP `put' command (implement not yet)");
		this._outputPrintStream.println();

		this._outputPrintStream.printf("-%-20s\t%-40s\n", "exit", "");
		this._outputPrintStream.printf("-%-20s\t%-40s\n", "help", "");
		this._outputPrintStream.printf("-%-20s\t%-40s\n", "version", "");
		this._outputPrintStream.println();
	}

}
